// 引入path模块
const path = require('path')
// fs模块
const fs = require('fs')
// 引入jwt
const jwt = require('jsonwebtoken')
// 数据库操作
const query = require('../db')

// 得到加密秘钥 同步读取文件中内容
const SECRET = fs.readFileSync(path.join(path.dirname(__dirname), '.env'), 'utf8').replace("\n", '')

// 验证用户是否已经登录
const checkLoginMiddleWare = async (req, res, next) => {
  // 获取头信息中的token值
  let token = req.headers.authorization.split(' ')[1]
  if (!token) {
    return res.status(403).send({
      code: 1001,
      msg: '无权访问'
    })
  }
  try {
    // 对于token进行解码 原数据 用户数据
    let {id} = jwt.verify(token, SECRET)
    // 对于用户数据二次验证
    let sql = "select * from users where id=" + id
    let result = await query(sql)
    console.log(result)
    if (result.length == 0) {
      return res.status(403).send({
        code: 1003,
        msg: '越权了!!!'
      })
    }
    next()
  } catch (e) {
    return res.status(403).send({
      code: 1002,
      msg: '越权了'
    })
  }
}
module.exports = checkLoginMiddleWare
